// // 对象的 深浅拷贝

// // 对象的 深拷贝
// const obj = {
//     name: 'zhangsan',
//     age: 18
// }

// console.log(obj);

// const obj2 = obj

// obj2.name = 'lisi'

// console.log(obj)

// // 对象的 浅拷贝
// const obj3 = {...obj} // 展开运算符
// obj3.name = 'wangwu'
// console.log(obj)

// Object.assign(obj3, {name: 'zhaoliu'}) // 对象的合并
// console.log(obj)

// 数组 的浅拷贝
// const arr = [1, 2, 3]

// const arr2 = [...arr]

// arr3 = arr.concat([4, 5])

// console.log(arr2, arr3);

// const obj ={
//     name: 'zhangsan',
//     age: 18,
//     address: {
//         city: 'beijing',
//         country: {
//             city: 'china'
//         }
//     }
// }

// console.log(obj);

// const obj2 = obj

// obj2.address.country.city = 'shanghai'

// console.log(obj);

// console.log([1, 2, 3] instanceof Array);


const obj = {
    name: 'zhangsan',
    age: 18,
    address: {
        city: 'beijing',
    },
    hobby: ['eat', 'sleep']
}

// 手戳 浅拷贝
function shallowCopy(newObj, oldObj) {
    for(let key in oldObj) {
        newObj[key] = oldObj[key]
    }
}

// 手戳 深拷贝
function deepCopy(newObj, oldObj) {
    for(let key in oldObj) {
        // 数组 一定要 写在最前面 因为 数组的 instanceof 为 object
        if(oldObj[key] instanceof Array) {
            deepCopy([], oldObj[key])
        }
        else if (oldObj[key] instanceof Object) {
            deepCopy({}, oldObj[key])
        }
        else {
            newObj[key] = oldObj[key]
        }
    }
}


